<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      const str = "我正在学习前端中的正则表达式";
      // 正则表达式
      const reg = /正则表达式/;
      // test：返回布尔值，判断是否匹配
      const res = reg.test(str);
      console.log(res);
      // exec：返回匹配到的结果数组，如果没有匹配到返回null
      const res2 = reg.exec(str);
      console.log(res2);

      // 元字符：边界符 ^ $
      const str2 = "hello";
      const reg3 = /^h/; // 以h开头
      const res3 = reg3.test(str2);
      console.log(res3);

      const reg4 = /o$/; // 以h结尾
      const res4 = reg4.test(str2);
      console.log(res4);

      const reg5 = /^ho$/; // 以h开头，以o结尾，中间不能有其他字符
      const res5 = reg5.test(str2);
      console.log(res5);
      const str3 = "ho";
      console.log(reg5.test(str3));

      // 元字符：量词 * + ? {n} {n,} {n,m}
      // * 0次或多次
      console.log("*: ",/^哈*$/.test("哈哈哈哈"));
      // + 1次或多次
      console.log("+: ",/^哈+$/.test("哈哈哈哈"));
      // ? 0次或1次
      console.log("?：",/^哈?$/.test("哈"));
      // {n} 重复n次
      console.log("{n}: ",/^哈{2}$/.test("哈哈"));
      // {n,} 重复n次或更多次
      console.log("{n,}: ",/^哈{2,}$/.test("哈"));
      // {n,m} 重复n次到m次
      console.log("{n,m}: ",/^哈{2,4}$/.test("哈哈哈哈哈"));

      // 元字符：字符类 [] . 和 预定义类 \d \D \w \W \s \S
      //  []：匹配方括号中的任意一个字符，只能匹配一个字符
      console.log("[]: ",/^[abc]$/.test("a"));
      console.log("[]: ",/^[abc]$/.test("e"));
      console.log("[]: ",/^[a-z]$/.test("ab"));
      // [^] 匹配除了方括号中的任意一个字符
      console.log("[^]: ",/^[^abc]$/.test("e"));
      // . 匹配除了换行符以外的任意字符
      console.log(".: ",/^.$/.test("a"));
      // \d 匹配数字
      console.log("\d: ",/^\d$/.test("1"));
      // \D 匹配非数字
      console.log("\D: ",/^\D$/.test("a"));
      // \w 匹配字母、数字、下划线
      console.log("\w: ",/^\w$/.test("a"));
      // \W 匹配非字母、数字、下划线
      console.log("\W: ",/^\W$/.test("a"));
      // \s 匹配空格
      console.log("\s: ",/^\s$/.test(" "));
      // \S 匹配非空格
      console.log("\S: ",/^\S$/.test("a"));


      // 修饰符：i g replace
      // i 忽略大小写
      console.log("i: ",/^a$/i.test("A"));
      // g 全局匹配
      console.log("g: ",/[a-z]/g.test("123123a12312"));
      // replace 替换
      console.log("replace: ","123123a12A12".replace(/[a-z]/ig,"*"));
    </script>
  </body>
</html>

